package com.transaction.demo.accounting;

import javax.validation.Valid;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import com.transaction.demo.accounting.vo.req.AccountingVoucherAddReqVo;
import com.transaction.demo.accounting.vo.req.AccountingVoucherListReqVo;
import com.transaction.demo.accounting.vo.req.AccountingVoucherReqVo;
import com.transaction.demo.accounting.vo.req.AccountingVoucherUpdateReqVo;
import com.transaction.demo.accounting.vo.resp.AccountingVoucherRespVo;
import com.transaction.demo.common.util.Result;
import com.transaction.demo.common.util.ResultPage;

/**
 * 描述：会计原始凭证服务接口
 * 作者：马庆智
 * 日期：2023/4/27 15:33
 */
@FeignClient(value = "demo-account-provider", fallback = AccountingVoucherServiceHystrix.class, path = "/account/accountingVoucher")
public interface AccountingVoucherService {

	/**
	 * 查询会计原始凭证表
	 *
	 * @param record 请求参数
	 * @return AccountingVoucherResp
	 * @author 马庆智
	 * @date: 2023/04/27 17:54:01
	 */
	@PostMapping("/queryAccountingVoucher")
	AccountingVoucherRespVo query(@RequestBody @Valid AccountingVoucherReqVo record);

	/**
	 * 查询会计原始凭证表列表
	 *
	 * @param record 请求参数
	 * @return AccountingVoucherResp
	 * @author 马庆智
	 * @date: 2023/04/27 17:54:01
	 */
	@PostMapping("/queryAccountingVoucherList")
	Result<ResultPage<AccountingVoucherRespVo>> queryAccountingVoucherList(
			@RequestBody @Valid AccountingVoucherListReqVo record);

	/**
	 * 添加会计原始凭证表
	 *
	 * @param record 请求参数
	 * @return Result<Integer>
	 * @author 马庆智
	 * @date: 2023/04/27 17:54:01
	 */
	@PostMapping("/saveAccountingVoucher")
	Result<Integer> saveAccountingVoucher(@RequestBody @Valid AccountingVoucherAddReqVo record);

	/**
	 * 删除会计原始凭证表
	 *
	 * @param ids 请求参数
	 * @return Result<Integer>
	 * @author 马庆智
	 * @date: 2023/04/27 17:54:01
	 */
	@PostMapping("/deleteAccountingVoucher")
	Result<Integer> deleteAccountingVoucher(String ids);

	/**
	 * 更新会计原始凭证表
	 *
	 * @param record 请求参数
	 * @return Result<Integer>
	 * @author 马庆智
	 * @date: 2023/04/27 17:54:01
	 */
	@PostMapping("/updateAccountingVoucher")
	Result<Integer> updateAccountingVoucher(@RequestBody @Valid AccountingVoucherUpdateReqVo record);

}
